package checkers3d.logic;

/**
 * Interface for objects capable of playing checkers. Allows some other object
 * to request a move from an implementing object as a Point3D.
 *
 * @author Ruben Acuna
 */
public interface IPlayerController
{
    /**
     * Returns a Point3D of the next board location this controller wants to
     * click. In general, Game will use this to build overlays. However, in the
     * case of AI/networked controller, the controller should prep the board
     * overlays itself.
     *
     * @return A move.
     */
    Point3D popLastMove();

    /**
     * Return the current player object that this controller is playing for.
     *
     * @return Player pbject.
     */
    Player getPlayer();

    /**
     * Sets the current player object that this controller is playing for.
     *
     * @param player Player object.
     */
    void setPlayer(Player player);
}